package com.mzx.javase.常用类;

/**
 * @Description:拆箱与装箱
 * @Date: 2022/3/14 17:26
 * @Author: MarKing
 */
public class WrapperTest {
    /**
     * 装箱：基本类型转换为引用数据类型。
     * 拆箱：包装类型转换为基本数据类型。
     */
    public static void main(String[] args) {
        //装箱：
        Integer integer = new Integer(5);
        Integer integer1 = Integer.valueOf(5);
        //拆箱
        int i = integer.intValue();
        /**
         * 自动装箱与拆箱
         * 从jdk1.5开始，基本类型与包装类型可以自动进行转换
         */
        Integer integer5 = new Integer(5);
        int sum = integer5 + 1;
        System.out.println(sum);

        //基本类型与字符串之间的转换 : 基本类型 + "" 就可以了
        //基本类型-->字符串
        String a = 123 + "";
        String b = false + "";

        //包装类型转基本类型：除了Character 之外
        /**
         * 基本类型->包装类型
         * byte     Byte
         * short    Short
         * int      Integer
         * long     Long
         * float    Float
         * double   Double
         * boolean  Boolean
         * char     Character
         */
        //调用包装类型对应的静态方法，parseXXX(String s)
        int i1 = Integer.parseInt("999");
        //long l = Long.parseLong("999l");//类型转化异常，NumberFormatException
        System.out.println(i1);

        System.out.println("integer包装类型的最大值："+Integer.MAX_VALUE);
        System.out.println("integer包装类型的最小值："+Integer.MIN_VALUE);

        //自动装箱
        Integer i2 = 5;
        //自动拆箱
        int i3 = i2;

        /**
         *  int\Integer\String三者之间的转化
         *  int->String 1.String.valueOf    2.int + ""
         *  String -> int Integer.parseInt()
         *
         *  int ->Integer 1.装箱  2.Integer.valueOf()
         *  Integer ->int 1.拆箱  2.对象integer.intValue()
         *
         *  Integer->String String.valueOf()
         *  String->Integer Integer.valueOf()
         */
        //int 转String
        int i5 = 3;
        String intStr = i5 + "";
        System.out.println("int转string为："+intStr);
        String intStr2 = String.valueOf(i5);
        System.out.println("int转string为："+intStr2);

        //String 转int
        int i6 = Integer.parseInt(intStr);
        System.out.println("String 转int的i6:"+i6);

        //int 转Integer
        Integer integer2 = Integer.valueOf(i5);
        Integer integer3 = i5;
        System.out.println("int转Integer后的integer2："+integer2 +","+"integer3:"+integer3);
        //Integer转int
        int i4 = integer2.intValue();
        int i7 = integer3;
        System.out.println("Integer转int后的i4："+i4 +","+"i5:"+i5);

        //String转Integer
        Integer integer4 = Integer.valueOf("6");
        System.out.println("String转Integer后的结果integer4:"+integer4);
        //Integer转String
        String integer4Str = String.valueOf(integer4);
        System.out.println("Integer转String的结果integer4Str:" + integer4Str);




    }

}
